我不明白导入库或模块的三种方法之间的区别.正如我目前所理解的那样,
load 'file.rb'
将外部文件的内容导入当前文件,而:
require 'file.rb'
将执行相同的功能,但不会导入已导入的文件.
require_relative 'file.rb'
类似于require
,但它将加载仅在当前目录中的文件,而require
将使用搜索路径$:
来查找文件.我毫不怀疑我对这三种机制的理解是有缺陷的.有人可以提供一些澄清吗?
load
当您要导入文件时使用,无论它是否已导入.require
或require_relative
仅在您尚未导入文件时使用.
由此可见,当导入的文件是分析对象(数据文件)时使用前者,而后者用于提供程序中使用的一些功能(程序,库,框架的一部分).
虽然require
只能处理相对于的路径$:
,但它require_relative
是一个可以处理相对于当前目录的路径的扩展.require_relative
是一个超集require
,require
可以分发(虽然require_relative
是使用require
,所以如果require
要分配它必须重写).